home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 551-575 / disk_562 / intuisup / editor / source.lzh / window.c < prev   
C/C++ Source or Header  |  1991-10-20  |  15KB  |  406 lines

  1.         /*************************************
  2.          *                                   *
  3.          *             Editor v1.0           *
  4.          *   by Torsten Jürgeleit in 09/91   *
  5.          *                                   *
  6.          *             Window part           *
  7.          *                                   *
  8.          *************************************/
  9.  
  10.     /* Includes */
  11.  
  12. #include "includes.h"
  13. #include "defines.h"
  14. #include "imports.h"
  15. #include "protos.h"
  16.  
  17.     /* Defines for window gadgets */
  18.  
  19. #define WINDOW_TITLE_LEFT_EDGE    0
  20. #define WINDOW_TITLE_TOP_EDGE    10
  21. #define WINDOW_TITLE_TYPE    TEXT_DATA_TYPE_TEXT
  22. #define WINDOW_TITLE_FLAGS    (TEXT_DATA_FLAG_CENTER | TEXT_DATA_FLAG_BOLD)
  23. #define WINDOW_TITLE_TEXT_ATTR    &topaz80_attr
  24. #define WINDOW_TITLE_TEXT    "Change project window"
  25.  
  26.     /* Defines for window gadgets */
  27.  
  28. #define WINDOW_GADGET_OK        0
  29. #define WINDOW_GADGET_CANCEL        1
  30. #define WINDOW_GADGET_LEFT_EDGE        2
  31. #define WINDOW_GADGET_TOP_EDGE        3
  32. #define WINDOW_GADGET_WIDTH        4
  33. #define WINDOW_GADGET_HEIGHT        5
  34. #define WINDOW_GADGET_RESIZING        6
  35. #define WINDOW_GADGET_BACK_FILL        7
  36. #define WINDOW_GADGET_RENDER_COLORS    8
  37.  
  38. #define WINDOW_GADGET1_TYPE        GADGET_DATA_TYPE_BUTTON
  39. #define WINDOW_GADGET1_FLAGS        GADGET_DATA_FLAG_HOT_KEY
  40. #define WINDOW_GADGET1_TEXT        "_Ok"
  41. #define WINDOW_GADGET1_LEFT_EDGE    ((EDITOR_WINDOW_WIDTH / 2 - WINDOW_GADGET1_WIDTH) / 2)
  42. #define WINDOW_GADGET1_TOP_EDGE        (EDITOR_WINDOW_HEIGHT - WINDOW_GADGET1_HEIGHT - 10)
  43. #define WINDOW_GADGET1_WIDTH        ((6 + 2) * 8)
  44. #define WINDOW_GADGET1_HEIGHT        15
  45. #define WINDOW_GADGET1_TEXT_ATTR    &topaz80_attr
  46.  
  47. #define WINDOW_GADGET2_TYPE        GADGET_DATA_TYPE_BUTTON
  48. #define WINDOW_GADGET2_FLAGS        GADGET_DATA_FLAG_HOT_KEY
  49. #define WINDOW_GADGET2_TEXT        "_Cancel"
  50. #define WINDOW_GADGET2_LEFT_EDGE    (EDITOR_WINDOW_WIDTH / 2 + (EDITOR_WINDOW_WIDTH / 2 - WINDOW_GADGET1_WIDTH) / 2)
  51. #define WINDOW_GADGET2_TOP_EDGE        (EDITOR_WINDOW_HEIGHT - WINDOW_GADGET1_HEIGHT - 10)
  52. #define WINDOW_GADGET2_WIDTH        WINDOW_GADGET1_WIDTH
  53. #define WINDOW_GADGET2_HEIGHT        WINDOW_GADGET1_HEIGHT
  54. #define WINDOW_GADGET2_TEXT_ATTR    &topaz80_attr
  55.  
  56. #define WINDOW_GADGET3_TYPE        GADGET_DATA_TYPE_INTEGER
  57. #define WINDOW_GADGET3_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  58. #define WINDOW_GADGET3_LEFT_EDGE    (20 + (9 + 1) * 8)
  59. #define WINDOW_GADGET3_TOP_EDGE        20
  60. #define WINDOW_GADGET3_WIDTH        52
  61. #define WINDOW_GADGET3_HEIGHT        12
  62. #define WINDOW_GADGET3_TEXT        "_Left edge"
  63. #define WINDOW_GADGET3_TEXT_ATTR    &topaz80_attr
  64. #define WINDOW_GADGET3_INPUT_LEN    5
  65. #define WINDOW_GADGET3_INPUT_ACTIVATE    ((ULONG)WINDOW_GADGET_TOP_EDGE << 16 | WINDOW_GADGET_HEIGHT)
  66. #define WINDOW_GADGET3_INPUT_DEFAULT    NULL
  67.  
  68. #define WINDOW_GADGET4_TYPE        GADGET_DATA_TYPE_INTEGER
  69. #define WINDOW_GADGET4_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  70. #define WINDOW_GADGET4_LEFT_EDGE    WINDOW_GADGET3_LEFT_EDGE
  71. #define WINDOW_GADGET4_TOP_EDGE        (WINDOW_GADGET3_TOP_EDGE + WINDOW_GADGET3_HEIGHT + 4)
  72. #define WINDOW_GADGET4_WIDTH        WINDOW_GADGET3_WIDTH
  73. #define WINDOW_GADGET4_HEIGHT        WINDOW_GADGET3_HEIGHT
  74. #define WINDOW_GADGET4_TEXT        "_Top edge"
  75. #define WINDOW_GADGET4_TEXT_ATTR    &topaz80_attr
  76. #define WINDOW_GADGET4_INPUT_LEN    5
  77. #define WINDOW_GADGET4_INPUT_ACTIVATE    ((ULONG)WINDOW_GADGET_WIDTH << 16 | WINDOW_GADGET_LEFT_EDGE)
  78. #define WINDOW_GADGET4_INPUT_DEFAULT    NULL
  79.  
  80. #define WINDOW_GADGET5_TYPE        GADGET_DATA_TYPE_INTEGER
  81. #define WINDOW_GADGET5_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  82. #define WINDOW_GADGET5_LEFT_EDGE    WINDOW_GADGET3_LEFT_EDGE
  83. #define WINDOW_GADGET5_TOP_EDGE        (WINDOW_GADGET4_TOP_EDGE + WINDOW_GADGET3_HEIGHT + 4)
  84. #define WINDOW_GADGET5_WIDTH        WINDOW_GADGET3_WIDTH
  85. #define WINDOW_GADGET5_HEIGHT        WINDOW_GADGET3_HEIGHT
  86. #define WINDOW_GADGET5_TEXT        "_Width"
  87. #define WINDOW_GADGET5_TEXT_ATTR    &topaz80_attr
  88. #define WINDOW_GADGET5_INPUT_LEN    5
  89. #define WINDOW_GADGET5_INPUT_ACTIVATE    ((ULONG)WINDOW_GADGET_HEIGHT << 16 | WINDOW_GADGET_TOP_EDGE)
  90. #define WINDOW_GADGET5_INPUT_DEFAULT    NULL
  91.  
  92. #define WINDOW_GADGET6_TYPE        GADGET_DATA_TYPE_INTEGER
  93. #define WINDOW_GADGET6_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_LEFT | GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE)
  94. #define WINDOW_GADGET6_LEFT_EDGE    WINDOW_GADGET3_LEFT_EDGE
  95. #define WINDOW_GADGET6_TOP_EDGE        (WINDOW_GADGET5_TOP_EDGE + WINDOW_GADGET3_HEIGHT + 4)
  96. #define WINDOW_GADGET6_WIDTH        WINDOW_GADGET3_WIDTH
  97. #define WINDOW_GADGET6_HEIGHT        WINDOW_GADGET3_HEIGHT
  98. #define WINDOW_GADGET6_TEXT        "_Height"
  99. #define WINDOW_GADGET6_TEXT_ATTR    &topaz80_attr
  100. #define WINDOW_GADGET6_INPUT_LEN    5
  101. #define WINDOW_GADGET6_INPUT_ACTIVATE    ((ULONG)WINDOW_GADGET_LEFT_EDGE << 16 | WINDOW_GADGET_WIDTH)
  102. #define WINDOW_GADGET6_INPUT_DEFAULT    NULL
  103.  
  104. #define WINDOW_GADGET7_TYPE        GADGET_DATA_TYPE_CHECK
  105. #define WINDOW_GADGET7_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  106. #define WINDOW_GADGET7_TEXT        "_Resizing gadget"
  107. #define WINDOW_GADGET7_LEFT_EDGE    (WINDOW_GADGET3_LEFT_EDGE + WINDOW_GADGET3_WIDTH + 80)
  108. #define WINDOW_GADGET7_TOP_EDGE        (WINDOW_GADGET3_TOP_EDGE + 1)
  109. #define WINDOW_GADGET7_WIDTH        0
  110. #define WINDOW_GADGET7_HEIGHT        0
  111. #define WINDOW_GADGET7_TEXT_ATTR    &topaz80_attr
  112.  
  113. #define WINDOW_GADGET8_TYPE        GADGET_DATA_TYPE_CHECK
  114. #define WINDOW_GADGET8_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  115. #define WINDOW_GADGET8_TEXT        "_Fill background"
  116. #define WINDOW_GADGET8_LEFT_EDGE    WINDOW_GADGET7_LEFT_EDGE
  117. #define WINDOW_GADGET8_TOP_EDGE        (WINDOW_GADGET7_TOP_EDGE + 25)
  118. #define WINDOW_GADGET8_WIDTH        0
  119. #define WINDOW_GADGET8_HEIGHT        0
  120. #define WINDOW_GADGET8_TEXT_ATTR    &topaz80_attr
  121.  
  122. #define WINDOW_GADGET9_TYPE        GADGET_DATA_TYPE_CHECK
  123. #define WINDOW_GADGET9_FLAGS        (GADGET_DATA_FLAG_HOT_KEY | GADGET_DATA_FLAG_TEXT_RIGHT)
  124. #define WINDOW_GADGET9_TEXT        "_Use render colors"
  125. #define WINDOW_GADGET9_LEFT_EDGE    WINDOW_GADGET7_LEFT_EDGE
  126. #define WINDOW_GADGET9_TOP_EDGE        (WINDOW_GADGET8_TOP_EDGE + 25)
  127. #define WINDOW_GADGET9_WIDTH        0
  128. #define WINDOW_GADGET9_HEIGHT        0
  129. #define WINDOW_GADGET9_TEXT_ATTR    &topaz80_attr
  130.  
  131.     /* Statics for window requester */
  132.  
  133. STATIC struct GadgetData  window_gadget_data[] = {
  134.    {
  135.     WINDOW_GADGET1_TYPE,        /* gd_Type */
  136.     WINDOW_GADGET1_FLAGS,        /* gd_Flags */
  137.     WINDOW_GADGET1_LEFT_EDGE,    /* gd_LeftEdge */
  138.     WINDOW_GADGET1_TOP_EDGE,    /* gd_TopEdge */
  139.     WINDOW_GADGET1_WIDTH,        /* gd_Width */
  140.     WINDOW_GADGET1_HEIGHT,        /* gd_Height */
  141.     WINDOW_GADGET1_TEXT,        /* *gd_Text */
  142.     WINDOW_GADGET1_TEXT_ATTR,    /* *gd_TextAttr */
  143.     { 0, 0, 0 }
  144.    }, {
  145.     WINDOW_GADGET2_TYPE,        /* gd_Type */
  146.     WINDOW_GADGET2_FLAGS,        /* gd_Flags */
  147.     WINDOW_GADGET2_LEFT_EDGE,    /* gd_LeftEdge */
  148.     WINDOW_GADGET2_TOP_EDGE,    /* gd_TopEdge */
  149.     WINDOW_GADGET2_WIDTH,        /* gd_Width */
  150.     WINDOW_GADGET2_HEIGHT,        /* gd_Height */
  151.     WINDOW_GADGET2_TEXT,        /* *gd_Text */
  152.     WINDOW_GADGET2_TEXT_ATTR,    /* *gd_TextAttr */
  153.     { 0, 0, 0 }
  154.    }, {
  155.     WINDOW_GADGET3_TYPE,        /* gd_Type */
  156.     WINDOW_GADGET3_FLAGS,        /* gd_Flags */
  157.     WINDOW_GADGET3_LEFT_EDGE,    /* gd_LeftEdge */
  158.     WINDOW_GADGET3_TOP_EDGE,    /* gd_TopEdge */
  159.     WINDOW_GADGET3_WIDTH,        /* gd_Width */
  160.     WINDOW_GADGET3_HEIGHT,        /* gd_Height */
  161.     WINDOW_GADGET3_TEXT,        /* *gd_Text */
  162.     WINDOW_GADGET3_TEXT_ATTR,    /* *gd_TextAttr */
  163.     {
  164.     WINDOW_GADGET3_INPUT_LEN,    /* gd_InputLen */
  165.     WINDOW_GADGET3_INPUT_ACTIVATE,    /* gd_InputActivate */
  166.     WINDOW_GADGET3_INPUT_DEFAULT    /* gd_InputDefault */
  167.     }
  168.    }, {
  169.     WINDOW_GADGET4_TYPE,        /* gd_Type */
  170.     WINDOW_GADGET4_FLAGS,        /* gd_Flags */
  171.     WINDOW_GADGET4_LEFT_EDGE,    /* gd_LeftEdge */
  172.     WINDOW_GADGET4_TOP_EDGE,    /* gd_TopEdge */
  173.     WINDOW_GADGET4_WIDTH,        /* gd_Width */
  174.     WINDOW_GADGET4_HEIGHT,        /* gd_Height */
  175.     WINDOW_GADGET4_TEXT,        /* *gd_Text */
  176.     WINDOW_GADGET4_TEXT_ATTR,    /* *gd_TextAttr */
  177.     {
  178.     WINDOW_GADGET4_INPUT_LEN,    /* gd_InputLen */
  179.     WINDOW_GADGET4_INPUT_ACTIVATE,    /* gd_InputActivate */
  180.     WINDOW_GADGET4_INPUT_DEFAULT    /* gd_InputDefault */
  181.     }
  182.    }, {
  183.     WINDOW_GADGET5_TYPE,        /* gd_Type */
  184.     WINDOW_GADGET5_FLAGS,        /* gd_Flags */
  185.     WINDOW_GADGET5_LEFT_EDGE,    /* gd_LeftEdge */
  186.     WINDOW_GADGET5_TOP_EDGE,    /* gd_TopEdge */
  187.     WINDOW_GADGET5_WIDTH,        /* gd_Width */
  188.     WINDOW_GADGET5_HEIGHT,        /* gd_Height */
  189.     WINDOW_GADGET5_TEXT,        /* *gd_Text */
  190.     WINDOW_GADGET5_TEXT_ATTR,    /* *gd_TextAttr */
  191.     {
  192.     WINDOW_GADGET5_INPUT_LEN,    /* gd_InputLen */
  193.     WINDOW_GADGET5_INPUT_ACTIVATE,    /* gd_InputActivate */
  194.     WINDOW_GADGET5_INPUT_DEFAULT    /* gd_InputDefault */
  195.     }
  196.    }, {
  197.     WINDOW_GADGET6_TYPE,        /* gd_Type */
  198.     WINDOW_GADGET6_FLAGS,        /* gd_Flags */
  199.     WINDOW_GADGET6_LEFT_EDGE,    /* gd_LeftEdge */
  200.     WINDOW_GADGET6_TOP_EDGE,    /* gd_TopEdge */
  201.     WINDOW_GADGET6_WIDTH,        /* gd_Width */
  202.     WINDOW_GADGET6_HEIGHT,        /* gd_Height */
  203.     WINDOW_GADGET6_TEXT,        /* *gd_Text */
  204.     WINDOW_GADGET6_TEXT_ATTR,    /* *gd_TextAttr */
  205.     {
  206.     WINDOW_GADGET6_INPUT_LEN,    /* gd_InputLen */
  207.     WINDOW_GADGET6_INPUT_ACTIVATE,    /* gd_InputActivate */
  208.     WINDOW_GADGET6_INPUT_DEFAULT    /* gd_InputDefault */
  209.     }
  210.    }, {
  211.     WINDOW_GADGET7_TYPE,        /* gd_Type */
  212.     WINDOW_GADGET7_FLAGS,        /* gd_Flags */
  213.     WINDOW_GADGET7_LEFT_EDGE,    /* gd_LeftEdge */
  214.     WINDOW_GADGET7_TOP_EDGE,    /* gd_TopEdge */
  215.     WINDOW_GADGET7_WIDTH,        /* gd_Width */
  216.     WINDOW_GADGET7_HEIGHT,        /* gd_Height */
  217.     WINDOW_GADGET7_TEXT,        /* *gd_Text */
  218.     WINDOW_GADGET7_TEXT_ATTR,    /* *gd_TextAttr */
  219.     { 0, 0, 0 }
  220.    }, {
  221.     WINDOW_GADGET8_TYPE,        /* gd_Type */
  222.     WINDOW_GADGET8_FLAGS,        /* gd_Flags */
  223.     WINDOW_GADGET8_LEFT_EDGE,    /* gd_LeftEdge */
  224.     WINDOW_GADGET8_TOP_EDGE,    /* gd_TopEdge */
  225.     WINDOW_GADGET8_WIDTH,        /* gd_Width */
  226.     WINDOW_GADGET8_HEIGHT,        /* gd_Height */
  227.     WINDOW_GADGET8_TEXT,        /* *gd_Text */
  228.     WINDOW_GADGET8_TEXT_ATTR,    /* *gd_TextAttr */
  229.     { 0, 0, 0 }
  230.    }, {
  231.     WINDOW_GADGET9_TYPE,        /* gd_Type */
  232.     WINDOW_GADGET9_FLAGS,        /* gd_Flags */
  233.     WINDOW_GADGET9_LEFT_EDGE,    /* gd_LeftEdge */
  234.     WINDOW_GADGET9_TOP_EDGE,    /* gd_TopEdge */
  235.     WINDOW_GADGET9_WIDTH,        /* gd_Width */
  236.     WINDOW_GADGET9_HEIGHT,        /* gd_Height */
  237.     WINDOW_GADGET9_TEXT,        /* *gd_Text */
  238.     WINDOW_GADGET9_TEXT_ATTR,    /* *gd_TextAttr */
  239.     { 0, 0, 0 }
  240.    }, {
  241.     INTUISUP_DATA_END        /* mark end of gadget data */
  242.    }
  243. };
  244.     /* Change settings for project window */
  245.  
  246.    SHORT
  247. change_project_window(VOID)
  248. {
  249.    struct GadgetData  *gd = &window_gadget_data[0];
  250.    APTR   gl;
  251.    USHORT flags = template_list.tl_Flags;
  252.    SHORT  status;
  253.  
  254.    /* Init integer gadgets with current project window dimension */
  255.    (gd + WINDOW_GADGET_LEFT_EDGE)->gd_SpecialData.gd_InputData.gd_InputDefault      = (BYTE *)pwin->LeftEdge;
  256.    (gd + WINDOW_GADGET_TOP_EDGE)->gd_SpecialData.gd_InputData.gd_InputDefault       = (BYTE *)pwin->TopEdge;
  257.    (gd + WINDOW_GADGET_WIDTH)->gd_SpecialData.gd_InputData.gd_InputDefault          = (BYTE *)pwin->Width;
  258.    (gd + WINDOW_GADGET_HEIGHT)->gd_SpecialData.gd_InputData.gd_InputDefault         = (BYTE *)pwin->Height;
  259.    (gd + WINDOW_GADGET_RESIZING)->gd_SpecialData.gd_CheckData.gd_CheckSelected      = (flags & TEMPLATE_LIST_FLAG_RESIZING ? 1 : 0);
  260.    (gd + WINDOW_GADGET_BACK_FILL)->gd_SpecialData.gd_CheckData.gd_CheckSelected     = (flags & TEMPLATE_LIST_FLAG_BACK_FILL ? 1 : 0);
  261.    (gd + WINDOW_GADGET_RENDER_COLORS)->gd_SpecialData.gd_CheckData.gd_CheckSelected = (flags & TEMPLATE_LIST_FLAG_RENDER_COLORS ? 1 : 0);
  262.  
  263.    /* Print title and display gadgets */
  264.    IClearRenderWindow(eri, ewin, 0, 0, -1, -1);
  265.    IPrintText(eri, ewin, WINDOW_TITLE_TEXT, WINDOW_TITLE_LEFT_EDGE,
  266.            WINDOW_TITLE_TOP_EDGE, WINDOW_TITLE_TYPE, WINDOW_TITLE_FLAGS,
  267.                             WINDOW_TITLE_TEXT_ATTR);
  268.    if (!(gl = ICreateGadgets(eri, &window_gadget_data[0], 0, 0))) {
  269.       status = EDITOR_ERROR_OUT_OF_MEM;
  270.    } else {
  271.       IDisplayGadgets(ewin, gl);
  272.       status = change_project_window_action(gl);
  273.       IRemoveGadgets(gl);
  274.       IFreeGadgets(gl);
  275.    }
  276.    return(status);
  277. }
  278.     /* Perform action for change project window settings */
  279.  
  280.    STATIC SHORT
  281. change_project_window_action(APTR gl)
  282. {
  283.    struct TemplateList  *tl = &template_list;
  284.    struct MsgPort       *up = ewin->UserPort;
  285.    struct IntuiMessage  *msg;
  286.    struct NewWindow     *nwin = &project_new_window;
  287.    USHORT left_edge = pwin->LeftEdge, top_edge = pwin->TopEdge,
  288.       width = pwin->Width, height = pwin->Height,
  289.       max_width = wb_screen.Width, max_height = wb_screen.Height,
  290.       flags = tl->tl_Flags;
  291.    ULONG  value;
  292.    BOOL   keepon = TRUE;
  293.    SHORT  status = EDITOR_STATUS_NORMAL;
  294.  
  295.    do {
  296.       WaitPort(up);
  297.       while (msg = IGetMsg(up)) {
  298.      switch (msg->Class) {
  299.         case CLOSEWINDOW :
  300.            status = EDITOR_STATUS_QUIT;
  301.            keepon = FALSE;
  302.            break;
  303.         case ISUP_ID :
  304.            value = (ULONG)msg->IAddress;
  305.            switch (msg->Code) {
  306.           case WINDOW_GADGET_OK :
  307.  
  308.              /* Change project window */
  309.              nwin->LeftEdge = left_edge;
  310.              nwin->TopEdge  = top_edge;
  311.              nwin->Width    = width;
  312.              nwin->Height   = height;
  313.              tl->tl_Flags   = flags;
  314.              if ((status = new_project_window(flags)) ==
  315.                              EDITOR_STATUS_NORMAL) {
  316.             refresh_all_templates();
  317.              }
  318.              keepon = FALSE;
  319.              break;
  320.  
  321.           case WINDOW_GADGET_CANCEL :
  322.              keepon = FALSE;
  323.              break;
  324.  
  325.           case WINDOW_GADGET_LEFT_EDGE :
  326.              if ((value + width) > max_width) {
  327.             DisplayBeep(NULL);
  328.             ISetGadgetAttributes(gl, WINDOW_GADGET_LEFT_EDGE,
  329.                    0L, USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  330.                              (BYTE *)left_edge);
  331.              } else {
  332.             left_edge = value;
  333.             flags    |= TEMPLATE_LIST_FLAG_CHANGED;
  334.              }
  335.              break;
  336.  
  337.           case WINDOW_GADGET_TOP_EDGE :
  338.              if ((value + height) > max_height) {
  339.             DisplayBeep(NULL);
  340.             ISetGadgetAttributes(gl, WINDOW_GADGET_TOP_EDGE,
  341.                    0L, USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  342.                               (BYTE *)top_edge);
  343.              } else {
  344.             top_edge = value;
  345.             flags   |= TEMPLATE_LIST_FLAG_CHANGED;
  346.              }
  347.              break;
  348.  
  349.           case WINDOW_GADGET_WIDTH :
  350.              if ((left_edge + value) > max_width) {
  351.             DisplayBeep(NULL);
  352.             ISetGadgetAttributes(gl, WINDOW_GADGET_WIDTH,
  353.                    0L, USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  354.                                  (BYTE *)width);
  355.              } else {
  356.             width  = value;
  357.             flags |= TEMPLATE_LIST_FLAG_CHANGED;
  358.              }
  359.              break;
  360.  
  361.           case WINDOW_GADGET_HEIGHT :
  362.              if ((top_edge + value) > max_height) {
  363.             DisplayBeep(NULL);
  364.             ISetGadgetAttributes(gl, WINDOW_GADGET_HEIGHT,
  365.                    0L, USE_CURRENT_VALUE, USE_CURRENT_VALUE,
  366.                                 (BYTE *)height);
  367.              } else {
  368.             height = value;
  369.             flags |= TEMPLATE_LIST_FLAG_CHANGED;
  370.              }
  371.              break;
  372.  
  373.           case WINDOW_GADGET_RESIZING :
  374.              if (value) {
  375.             flags |= TEMPLATE_LIST_FLAG_RESIZING;
  376.              } else {
  377.             flags &= ~TEMPLATE_LIST_FLAG_RESIZING;
  378.              }
  379.              flags |= TEMPLATE_LIST_FLAG_CHANGED;
  380.              break;
  381.  
  382.           case WINDOW_GADGET_BACK_FILL :
  383.              if (value) {
  384.             flags |= TEMPLATE_LIST_FLAG_BACK_FILL;
  385.              } else {
  386.             flags &= ~TEMPLATE_LIST_FLAG_BACK_FILL;
  387.              }
  388.              flags |= TEMPLATE_LIST_FLAG_CHANGED;
  389.              break;
  390.  
  391.           case WINDOW_GADGET_RENDER_COLORS :
  392.              if (value) {
  393.             flags |= TEMPLATE_LIST_FLAG_RENDER_COLORS;
  394.              } else {
  395.             flags &= ~TEMPLATE_LIST_FLAG_RENDER_COLORS;
  396.              }
  397.              flags |= TEMPLATE_LIST_FLAG_CHANGED;
  398.              break;
  399.            }
  400.            break;
  401.      }
  402.       }
  403.    } while (keepon == TRUE);
  404.    return(status);
  405. }
  406.